package com.trinity.order.refund.domain;

import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.trinity.common.annotation.Excel;
import com.trinity.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.ToString;

import java.util.Date;

/**
 * 退款订单对象 xc_refund_order
 *
 * @author 董诗攀
 * @date 2024-02-26
 */
@Data
@ToString
@TableName("xc_refund_order")
public class XcRefundOrder extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    private Long id;

    /**
     * 商品订单号
     */
    @Excel(name = "商品订单号")
    private String orderId;

    /**
     * 退款单号
     */
    @Excel(name = "退款单号")
    private String outRefundNo;

    /**
     * 微信支付退款单号
     */
    @Excel(name = "微信支付退款单号")
    private String refundId;

    /**
     * 微信支付订单号
     */
    @Excel(name = "微信支付订单号")
    private String transactionId;

    /**
     * 退款渠道
     */
    @Excel(name = "退款渠道")
    private String channel;

    /**
     * 退款入账账户
     */
    @Excel(name = "退款入账账户")
    private String userReceivedAccount;

    /**
     * 退款原因
     */
    @Excel(name = "退款原因")
    private String reason;

    /**
     * 订单总金额，单位为分
     */
    @Excel(name = "订单总金额，单位为分")
    private String total;

    /**
     * 退款金额
     * 退款标价金额，单位为分，可以做部分退款
     */
    @Excel(name = "退款金额退款标价金额，单位为分，可以做部分退款")
    private Integer refund;

    /**
     * 退款成功时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "退款成功时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date successTime;

    /**
     * 用户支付金额
     */
    @Excel(name = "用户支付金额")
    private Integer payerTotal;

    /**
     * 资金账户
     * 退款所使用资金对应的资金账户类型
     * 枚举值：
     * UNSETTLED : 未结算资金
     * AVAILABLE : 可用余额
     * UNAVAILABLE : 不可用余额
     * OPERATION : 运营户
     * BASIC : 基本账户（含可用余额和不可用余额）
     * 示例值：UNSETTLED
     */
    @Excel(name = "资金账户 ", readConverterExp = "含=可用余额和不可用余额")
    private String fundsAccount;

    /**
     * 退款状态
     * 退款到银行发现用户的卡作废或者冻结了，导致原路退款银行卡失败，可前往商户平台-交易中心，手动处理此笔退款。
     * 枚举值：
     * SUCCESS：退款成功
     * CLOSED：退款关闭
     * PROCESSING：退款处理中
     * ABNORMAL：退款异常
     * 示例值：SUCCESS
     */
    @Excel(name = "退款状态 ")
    private String status;

    /**
     * 用户退款金额
     */
    @Excel(name = "用户退款金额")
    private Integer payerRefund;

    /**
     * 应结退款金额
     */
    @Excel(name = "应结退款金额")
    private Integer settlementRefund;

    /**
     * 应结订单金额
     */
    @Excel(name = "应结订单金额")
    private Integer settlementTota;

    /**
     * 优惠退款金额
     */
    @Excel(name = "优惠退款金额")
    private Integer discountRefund;

    /**
     * 退款币种
     */
    @Excel(name = "退款币种")
    private String currency;

    /**
     * 手续费退款金额
     */
    @Excel(name = "手续费退款金额")
    private Integer refundFee;

    private String contentReturn;

    private String contentNotify;

}
